package code1.hash;

import java.util.HashSet;
import java.util.Set;

/**
 * 原题链接：https://leetcode.cn/problems/happy-number/description/
 */
public class P202 {

    //求n各个位上的平方和
    public int getSum(int n){
        int sum=0;
        while (n!=0){
            sum+=(n%10)*(n%10);
            n=n/10;
        }
        return sum;
    }

    public boolean isHappy(int n) {
        Set<Integer> set=new HashSet<>();       //用于记录sum
        while (true){
            int sum = getSum(n);
            if(sum==1){
                return true;
            }
            if(set.contains(sum)){      //如果已经包含这个sum了，说明已经陷入无限循环了
                return false;
            }
            set.add(sum);
            n=sum;
        }
    }
}
